package com.ruoyi.hxf.service;

import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.hxf.domain.Message;

import java.util.List;

/**
 * 消息 服务层
 *
 * @author hxf
 */
public interface IMessageService {
    /**
     * 新增消息信息(电脑端)
     *
     * @param message
     * @return 结果
     */
    int insertMessage(Message message);
    /**
     * 获取自己的发送消息列表或者接收的消息列表（适用于手机端和电脑端）
     *
     * @param message 信息
     * @return 信息集合
     */
    List<Message> selectHomeWorkMessageList(Message message);

    /**
     * 获取自己的发送消息列表或者接收的消息列表（适用于手机端和电脑端）
     *
     * @param message 信息
     * @return 信息集合
     */
    TableDataInfo<Message> selectPageHomeWorkMessageList(Message message, PageQuery pageQuery);
    /**
     * 获取自己的发送消息列表或者接收的消息列表（适用于手机端和电脑端）
     *
     * @param message 信息
     * @return 信息集合
     */
    List<Message> selectMessageList(Message message);

    /**
     * 删除收到的消息信息（逻辑删除）
     *
     * @param msgIds 需要删除的消息ID
     * @return
     */
    int deleteMessageByIds(Long[] msgIds,int i);

    /**
     * 查询置顶的数量
     * @return
     */
    Integer selectToppingQuantity();

    /**
     * 设置置顶的排序
     * @param msgId 消息ID
     * @param i 等级
     */
    void updateToppingQuantity(Long msgId, int i);

    /**
     * 标记是否读取
     * @param msgId 消息ID
     * @param i 状态
     */
    void updateReadStatus(Long msgId, int i);

    /**
     *  查询班级发送的信息列表
     * @param message
     * @param pageQuery
     * @return
     */
    TableDataInfo<Message> queryPageList(Message message, PageQuery pageQuery);

    /**
     * 查询已读的人数
     * @param similarMessage
     * @return
     */
    Long selectSimilarMessageList(Message similarMessage);

    /**
     * 撤回消息信息
     * @param msgIds
     * @return
     */
    int updateMessageByIds(Long[] msgIds);
}
